﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net.Mime;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Iacym.Entities;
using Iacym.BusinessLogic;
using Microsoft.Practices.Unity;
using System.Reflection;

namespace Iacym.UI
{
    public partial class FrmMttoDetalleCitas : Form
    {
        [Dependency]
        public PersonaBL personaBL { get; set; }

        [Dependency]
        public AgendumBL agendaBL { get; set; }

        [Dependency]
        public IDetalleCitasBL dcBL { get; set; }

        [Dependency]
        public IFoto_PersonaBL fotoBL { get; set; }

        public FrmMttoDetalleCitas()
        {
            InitializeComponent();
            this.BuildUp();
        }

        private void FrmMttoDetalleCitas_Load(object sender, EventArgs e)
        {
             dETALLE_CITABindingSource.DataSource = new DETALLE_CITA();
        }

        public Agendum _currentAgenda
        {
            get { return agendumBindingSource.Current as Agendum; }
            set { agendumBindingSource.DataSource = value; }
        }

        public void Editar()
        {
            FOTO_PERSONA foto;

            if (_currentAgenda.PERSONA == null)
            {
                var persona = personaBL.GetFromPersonaById(_currentAgenda.PersonaId);
                _currentAgenda.PERSONA = persona;
            }

            foto = fotoBL.GetFromFotoPersonaByPersonaId(_currentAgenda.PersonaId);
            _currentAgenda.PERSONA.FOTO_PERSONA = foto;
            agendumBindingSource.DataSource = _currentAgenda;

            if (_currentAgenda.PERSONA.Estado)
            {
                chbActivo.Checked = true;
                chbNoActivo.Enabled = false;
            }
            else
            {
                chbNoActivo.Checked = true;
                chbActivo.Enabled = false;
            }

            //lblNombreCompleto.Text = _currentAgenda.PERSONA.NombreCompleto;
            linkPersona.Text = _currentAgenda.PERSONA.NombreCompleto;

            var _detallecita = dcBL.GetAllFromDetalleCitasByPersonaId(_currentAgenda.PersonaId);
            dETALLECITABindingSource.DataSource = _detallecita;
        }

        private void BtnGuardar_Click(object sender, EventArgs e)
        {
            Agendum _agenda = agendumBindingSource.Current as Agendum;

            if (_agenda != null)
            {
                for (int i = 0; i < dETALLE_CITABindingSource.Count; i++)
                {
                    var _dcita = (DETALLE_CITA)dETALLE_CITABindingSource.List[i];
                    if (_dcita.Temas != null)
                    {
                        _dcita.AgendaId = _agenda.Id;
                        _dcita.Conclusion = _dcita.Conclusion.ToUpper();
                        _dcita.Temas = _dcita.Temas.ToUpper();
                        dcBL.AddDetalleCitas(_dcita);                                            
                    }                    
                }

                //Actualizamos solo el estado de la persona
                if (chbActivo.Checked)
                {
                    _agenda.PERSONA.Estado = true;
                }
                else if (chbNoActivo.Checked)
                {
                    _agenda.PERSONA.Estado = false;
                }
                else if (!chbActivo.Checked && !chbNoActivo.Checked)
                {
                    _agenda.PERSONA.Estado = false;
                }

                if (_agenda.PERSONA.Id != 1)
                {
                    personaBL.UpdatePersona(_agenda.PERSONA);
                }
                
                MessageBox.Show(@"Registro Correcto.", @"Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                Close();
            }
        }

        private void linkPersona_Click(object sender, EventArgs e)
        {
            if (_currentAgenda.PERSONA != null)
            {
                FrmMttoPersona frm = new FrmMttoPersona();
                frm.CurrentPersona = _currentAgenda.PERSONA;
                frm.VerDetalle();
                frm.ShowDialog();
            }
        }

        private void btnVerDonacion_Click(object sender, EventArgs e)
        {
            if (_currentAgenda != null)
            {
                FrmOfrenda frm = new FrmOfrenda();
                frm.isPersona = true;
                frm._nombrePersona =_currentAgenda.PERSONA.NombreCompleto;
                frm.ShowDialog();
            }
        }

        private void chbNoActivo_CheckedChanged(object sender, EventArgs e)
        {
            if (chbNoActivo.Checked)
            {
                chbActivo.Enabled = false;
            }
            else
            {
                chbActivo.Enabled = true;
            }
        }

        private void chbActivo_CheckedChanged(object sender, EventArgs e)
        {
            if (chbActivo.Checked)
            {
                chbNoActivo.Enabled = false;
            }
            else
            {
                chbNoActivo.Enabled = true;
            }
        }
    }
}
